From 123f8f60a28499b7ef4b24f0ee1232fb88cd1e3b Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 22 Feb 2006 19:38:50 +0100 Subject: [PATCH] Fix gcc warning and clean a piece of code in arch_set_info_guest to avoid AP of HVM domain going to a wrong code path. Signed-off-by: Xin Li --- xen/arch/x86/domain.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 7584201bfb..fd9ffd7530 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -346,7 +346,7 @@ int arch_set_info_guest( struct vcpu *v, struct vcpu_guest_context *c) { struct domain *d = v->domain; - unsigned long phys_basetab; + unsigned long phys_basetab = INVALID_MFN; int i, rc; /* @@ -421,7 +421,14 @@ int arch_set_info_guest( if ( (rc = (int)set_gdt(v, c->gdt_frames, c->gdt_ents)) != 0 ) return rc; - if ( shadow_mode_refcounts(d) ) + if ( c->flags & VGCF_HVM_GUEST ) + { + v->arch.guest_table = mk_pagetable(0); + + if ( !hvm_initialize_guest_resources(v) ) + return -EINVAL; + } + else if ( shadow_mode_refcounts(d) ) { if ( !get_page(mfn_to_page(phys_basetab>>PAGE_SHIFT), d) ) { @@ -429,7 +436,7 @@ int arch_set_info_guest( return -EINVAL; } } - else if ( !(c->flags & VGCF_HVM_GUEST) ) + else { if ( !get_page_and_type(mfn_to_page(phys_basetab>>PAGE_SHIFT), d, PGT_base_page_table) ) @@ -439,14 +446,6 @@ int arch_set_info_guest( } } - if ( c->flags & VGCF_HVM_GUEST ) - { - v->arch.guest_table = mk_pagetable(0); - - if ( !hvm_initialize_guest_resources(v) ) - return -EINVAL; - } - update_pagetables(v); if ( v->vcpu_id == 0 ) -- 2.30.2